package com.lbh.cloudgallery.front;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lbh.cloudgallery.entity.CollectionEntity;
import com.lbh.cloudgallery.entity.vo.StarRespVo;
import com.lbh.cloudgallery.entity.vo.StarVo;
import com.lbh.cloudgallery.service.CollectionService;
import com.xxx.common.utils.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author lbh
 * @date 2021/2/28
 * 关于收藏这个功能，在进入详情页面的时候就得去请求一下服务器，
 * 根据服务器返回的字段  “   startStaus   "  判断该用户是否已经收藏了此商品
 * 然后通过点击可以实现取消收藏或者收藏。页面控件再借此字段进行变色
 */
@Api(tags = "前端-收藏模块")
@RestController
@RequestMapping("front/collection")
public class FrontCollectionController {

    @Autowired
    CollectionService collectionService;
    /**
     * 详情页加载收藏状态
     */
    @ApiOperation(value = "详情页加载收藏状态   1是已收藏，0是未收藏")
    @GetMapping("/getStar")
    public R getStar(@RequestParam("memberId") Long memberId,@RequestParam("productId") Long productId){
        int count = collectionService.count(new QueryWrapper<CollectionEntity>().eq("member_id", memberId).eq("product_id", productId));
        return R.ok().put("startStaus",count);
    }


    /**
     * 商品详情页点击收藏（改变收藏状态）接口
     * @param startStaus
     * @param vo
     * @return i 收藏状态
     */
    @ApiOperation(value = "商品详情页点击收藏（改变收藏状态）接口，返回一个收藏状态")
    @PostMapping("/changeStar/{startStaus}")
    public R changeStar(@PathVariable("startStaus") Integer startStaus,@RequestBody StarVo vo){
        int i = collectionService.changeStar(startStaus, vo);
        //其实不该这么写的，不规范，但是为了给你们看得清楚就拖鞋了
        return R.ok().put("startStaus",i);
    }

    @ApiOperation(value = "用户收藏页查询全部收藏接口")
    @GetMapping("/listStar")
    public R listStar(@RequestParam("memberId") Long memberId){
        List<StarRespVo> starRespVos = collectionService.listStar(memberId);
        return R.ok().put("data",starRespVos);
    }

    @ApiOperation(value = "用户收藏页移除收藏接口")
    @DeleteMapping("/removeStar")
    public R removeStar(@RequestParam("memberId") Long memberId,@RequestParam("productId") Long productId){
        boolean remove = collectionService.remove(new QueryWrapper<CollectionEntity>().eq("member_id", memberId).eq("product_id", productId));
        if (remove){
            return R.ok().put("msg","移除成功");
        }else return R.error().put("msg","删除失败");
    }

}
